\subsubsection{Коррекция (патчинг) строки (Win32)}

Мы можем легко найти строку ``hello, world'' в исполняемом файле при помощи Hiew:

\begin{figure}[H]
\centering
\myincludegraphics{patterns/01_helloworld/hola_edit1.png}
\caption{Hiew}
\label{}
\end{figure}

Можем перевести наше сообщение на испанский язык:

\begin{figure}[H]
\centering
\myincludegraphics{patterns/01_helloworld/hola_edit2.png}
\caption{Hiew}
\label{}
\end{figure}

Испанский текст на 1 байт короче английского, так что добавляем в конце байт 0x0A (\TT{\textbackslash{}n}) и нулевой байт.

Работает.

Что если мы хотим вставить более длинное сообщение?
После оригинального текста на английском есть какие-то нулевые байты.
Трудно сказать, можно ли их перезаписывать: они могут где-то использоваться в \ac{CRT}-коде, а может и нет.
Так или иначе, вы можете их перезаписывать, только если вы действительно знаете, что делаете.

\subsubsection{Коррекция строки (Linux x64)}

\myindex{\radare}
Попробуем пропатчить исполняемый файл для Linux x64 используя \radare{}:

\lstinputlisting[caption=Сессия в \radare{}]{patterns/01_helloworld/radare.lst}

Что я здесь делаю: ищу строку \q{hello} используя команду \TT{/}, 
я затем я выставляю \IT{курсор} (\IT{seek} в терминах \radare{}) на этот адрес.
Потом я хочу удостовериться, что это действительно нужное место: \TT{px} выводит байты по этому адресу.
\TT{oo+} переключает \radare{} в режим \IT{чтения-записи}.
\TT{w} записывает ASCII-строку на месте курсора (\IT{seek}).
Нужно отметить \TT{\textbackslash{}00} в конце --- это нулевой байт.
\TT{q} заканчивает работу.

\subsubsection{Локализация ПО во времена MS-DOS}

Описанный способ был очень распространен для перевода ПО под MS-DOS на русский язык в 1980-ые и 1990-ые.
Русские слова и предложения обычно немного длиннее английских, так что \IT{локализованное} ПО содержало
массу странных акронимов и труднопонятных сокращений.

Вероятно, так было и с другими языками в других странах.

